import numpy as np
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('smart car.jpeg',0)

dft = cv2.dft(np.float32(img),flags = cv2.DFT_COMPLEX_OUTPUT) # 傅里叶变换（零频率分量不在中心位置）
result1 = 20 * np.log(cv2.magnitude(dft[:,:,0], dft[:,:,1]))

dftShift = np.fft.fftshift(dft) # 傅里叶变换（零频率分量在中心位置）
result2 = 20 * np.log(cv2.magnitude(dftShift[:,:,0], dftShift[:,:,1]))

plt.figure(figsize=(10,4),dpi=120)
plt.subplot(131),plt.imshow(img, cmap = 'gray')
plt.title('img'),plt.axis('off')
plt.subplot(132),plt.imshow(result1, cmap = 'gray')
plt.title('dft'), plt.axis('off')
plt.subplot(133),plt.imshow(result2, cmap = 'gray')
plt.title('dftShift'), plt.axis('off')
plt.show()